package c97Coder;//package c97Coder;
//
//import java.io.UnsupportedEncodingException;
//import java.security.Signature;
//import java.security.SignatureException;
//
//import org.apache.commons.codec.DecoderException;
//
//
//
///**
//* RSA签名验签类
//*/
//public class RSASignature extends RSACoder{
//
//	/**
//	 * 用哪个算法来签名
//	 */
//	public static final String SIGNATURE_ALGORITHM = "SHA1WithRSA";
//
//	/**
//	 * 用RSA私钥对信息生成数字签名。
//	 * <br><br>
//	 * 创建人： 袁炜林 <br>
//	 * 创建时间：  2017年10月28日 下午5:44:42 <br>
//	 *
//	 * @param data 加密过的字节数组
//	 * @param base64Key 经过Base64编码的私钥
//	 * @return Signature，方便进一步转换为其他数据
//	 * @throws Exception
//	 */
//	public static Signature signToSignature(byte[] data, String base64Key) throws Exception {
//		Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
//		signature.initSign(base64ToPriKey(base64Key));
//		signature.update(data);
//		return signature;
//	}
//
//	/**
//	 * 	用RSA私钥对信息生成数字签名。
//	 * <br><br>
//	 * 创建人： 袁炜林 <br>
//	 * 创建时间：  2017年10月28日 下午5:49:35 <br>
//	 *
//	 * @param data 加密过的数据
//	 * @param base64Key 经过Base64编码的私钥
//	 * @param charset 字符编码
//	 * @return 签名，已用Base64编码
//	 * @throws UnsupportedEncodingException
//	 * @throws SignatureException
//	 * @throws Exception
//	 */
//	public static String signToBase64(String data, String base64Key, String charset) throws SignatureException, UnsupportedEncodingException, Exception {
//		return encryptBase64(signToSignature(data.getBytes(charset), base64Key).sign());
//	}
//
//
//	/**
//	 * 用RSA私钥对信息生成数字签名。
//	 * <br><br>
//	 * 创建人： 袁炜林 <br>
//	 * 创建时间：  2017年10月28日 下午5:52:30 <br>
//	 *
//	 * @param data 加密过的数据
//	 * @param base64Key 经过Base64编码的私钥
//	 * @param charset 字符编码
//	 * @return 签名，已用Base64编码
//	 * @throws SignatureException
//	 * @throws UnsupportedEncodingException
//	 * @throws Exception
//	 */
//	public static String signToHex(String data, String base64Key, String charset) throws SignatureException, UnsupportedEncodingException, Exception {
//		return bytesToHex(signToSignature(data.getBytes(charset), base64Key).sign());
//	}
//
//
//	/**
//	 * 用RSA公钥对校验数字签名。
//	 * <br><br>
//	 * 创建人： 袁炜林 <br>
//	 * 创建时间：  2017年10月28日 下午5:56:35 <br>
//	 *
//	 * @param data 加密过的数据
//	 * @param base64Key 经过Base64编码的公钥
//	 * @param signed 签名，已用Base64编码
//	 * @return
//	 * @throws Exception
//	 */
//	public static Signature verifyToSignature(byte[] data, String base64Key) throws Exception {
//		Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
//		signature.initVerify(base64ToPubKey(base64Key));
//		signature.update(data);
//		return signature;
//	}
//
//	/**
//	 * 用RSA公钥对校验数字签名。
//	 * <br><br>
//	 * 创建人： 袁炜林 <br>
//	 * 创建时间：  2017年10月28日 下午6:00:25 <br>
//	 *
//	 * @param data 加密过的数据
//	 * @param signed 签名，已用Base64编码
//	 * @param base64Key 经过Base64编码的公钥
//	 * @param charset 字符编码
//	 * @return 校验成功返回true 失败返回false
//	 * @throws UnsupportedEncodingException
//	 * @throws SignatureException
//	 * @throws Exception
//	 */
//	public static boolean verifyFromBase64(String data, String signed, String base64Key, String charset) throws SignatureException, UnsupportedEncodingException, Exception {
//		//验证签名是否正常
//		return verifyToSignature(data.getBytes(charset), base64Key).verify(decryptBase64(signed));
//	}
//
//	/**
//	 * 用RSA公钥对校验数字签名。
//	 * <br><br>
//	 * 创建人： 袁炜林 <br>
//	 * 创建时间：  2017年10月28日 下午6:10:24 <br>
//	 *
//	 * @param data 加密过的数据
//	 * @param signed 签名，是由字节数组转换成的16进制字符串
//	 * @param base64Key 经过Base64编码的公钥
//	 * @param charset 字符编码
//	 * @return 校验成功返回true 失败返回false
//	 * @throws SignatureException
//	 * @throws UnsupportedEncodingException
//	 * @throws DecoderException
//	 * @throws Exception
//	 */
//	public static boolean verifyFromHex(String data, String signed, String base64Key, String charset) throws SignatureException, UnsupportedEncodingException, DecoderException, Exception {
//		//验证签名是否正常
//		return verifyToSignature(data.getBytes(charset), base64Key).verify(hexToBytes(signed));
//	}
//
//
//	public static void main(String[] args) {
//		try {
//
//			String inputStr = "sign";
//
//			String encrypted = encryptByPrivateKey(inputStr, privateKey, "UTF-8");
//
//			System.err.println("私钥签名——公钥验证签名");
//			//产生签名
//			String sign = signToHex(encrypted, privateKey, "UTF-8");
//			System.err.println("签名:\r" + sign);
//
//			//验证签名
//			boolean status = verifyFromHex(encrypted, sign, publicKey, "UTF-8");
//			System.err.println("状态:\r" + status);
//
//		} catch (Exception e) {
//			//TODO: handle exception
//		}
//	}
//
//
//}
